/*
 * sockets.h
 *
 *  Created on: 12/10/2011
 *      Author: utn_so
 */

#ifndef SOCKETS_H_
#define SOCKETS_H_


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/select.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

#define SOCK_BUFFER 512
#define LEERSECTOR 0x55
#define ESCRIBIRSECTOR 0x56

typedef struct {
char DescriptorID[20];
char PayloadDescriptor;
int32_t PayloadLength;
char *payload;
}t_NIPC;

int AFINET_abrir_conexion(unsigned short puerto);
int AFUNIX_abrir_conexion(char *ruta);
int aceptar_conexion(int sockfd);
int AFINET_conectar(char *dirIP, unsigned short puerto);
int AFUNIX_conectar(char *ruta);

int sendall(int s, char *buf, int *len);
int NIPC_enviar(int sock, t_NIPC paquete);
int NIPC_recibir(int sock, t_NIPC *paquete,int32_t *nroSector);
void obtenerDescriptor(char *ID);
t_NIPC NIPC_crearpaquete(char *DescriptorID, char PayloadDescriptor, int PayloadLength, char *Payload,int32_t *nroSector);
void NIPC_destruirpaquete(t_NIPC *paquete);
int32_t liberarMemoria (char **memoriaALiberar);
char *serializar(t_NIPC paquete);
t_NIPC deserializar(char *buffer,int32_t *nroSector);


#endif /* SOCKETS_H_ */
